package jsu.blogger.config;

public class RedisKeyPrefixConfig {
    //eg: USER_SET_FOLLOW_KEY_PREFIX命名方式 USER----作用对象 SET----redis存放的数据类型 FOLLOW----行为
    //用户关注set 维护关注表 里面redis的数据格式set 存放关注的用户id  存放值是string
    public static final String USER_SET_FOLLOW_KEY_PREFIX= "user:set:follow:";
    //对应上面键的过期时间
    public static final Long  USER_SET_FOLLOW_KEY_EXPIRE=60L;
    //Follower 维护的粉丝表  里面redis的数据格式set 存放粉丝用户id    存放值是string
    public static final String USER_SET_FOLLOWER_KEY_PREFIX= "user:set:follower:";
    //对应上面键的过期时间
    public static final Long  USER_SET_FOLLOWER_KEY_EXPIRE=60L;
    //博客缓存  缓存博客的所有详细情况

    public static final String BLOG_HASH_KEY_PREFIX ="blog:hash:save:";
    //博客缓存时间
    public static final Long BLOG_HASH_KEY_EXPIRE =60L;
    //博客缓存穿透时间  如果数据库中查询的数据为空 会设置1分钟的缓存
    public static final Long  HASH_PASS_THROUGH_KEY_EXPIRE=1L;
    //数据库对推荐的博客是否还可以查询
    public static final String  USER_HASH_INTEREST_OFFSET="user:hash:interest:offset";
    //推荐剩余数量表 键为用户id 值为推荐博客中未推荐的数量
    public static final String  USER_HASH_RECOMMENDATIONS="user:hash:recommendations";
    //已经推荐的博客id数据 值为时间戳 会定期的清除
    public static String getUserRecommendedBlogKey(Long userId) {
        return "user:zSet:RecommendedBlog:"+ userId; // 生成用户标签的 Redis 键
    }
    //博客id列表过期时间
    //public static final Long USER_RECOMMENDED_BLOG_KEY_EXPIRE = 10080L;
    //用户兴趣标签名  键为标签名 只为序列化的Map 其中有 double类型的权重 和 时间戳
    public static String getUserInterestTagsKey(Long userId){
        return "user:hash:interests:"+ userId;
    }

    //用户的阅读路径 user:post:read
    public static  final String USER_ZSET_POST_READ_KEY_EXPIRE = "user:zSet:post:read:";  // Redis 中存储热点信息的 List 键
    public static  final String BLOG_LIST_HOTSPOT_KEY = "blog:list:hotspot";  // Redis 中存储热点信息的 List 键
    public static final int BLOG_MAX_HOTSPOT_SIZE = 1000;  // 最大存储条数

}
